#ifndef TEMPADC_H
#define TEMPADC_H

#include "Main.h"

extern uint8_t ch;
extern unsigned int ADC_Value;

//使用之前需要实现函数接口: adc_model_init();
//初始化调用: ADInit();
//主循环调用: ADSampling();
//ADC工作时钟源,2ms定时调用: ADClock();


//温度探针
#define IO_Ref PORT_C_4 //参考点
#define IO_Oven PORT_C_2 //烤炉
#define IO_Probe1 PORT_C_3 //肉探针1
#define IO_Probe2 PORT_C_5 //肉探针2
#define IO_Probe3 PORT_C_6 //肉探针3
#define IO_Probe4 PORT_C_7 //肉探针4
#define IO_RTD PORT_C_8 //肉探针4

#define ADC_Channel_RTD ADC_AN14 //烤炉AD通道

//#define IO_Mode_RTD() MR88FX02_Gpio_Set_Mode(IO_RTD,ANALOG);
//#define IO_Mode_Oven() MR88FX02_Gpio_Set_Mode(IO_Oven,OUTPUT);
//#define IO_Mode_Probe1() MR88FX02_Gpio_Set_Mode(IO_Probe1,OUTPUT);
//#define IO_Mode_Probe2() MR88FX02_Gpio_Set_Mode(IO_Probe2,OUTPUT);
//#define IO_Mode_Probe3() MR88FX02_Gpio_Set_Mode(IO_Probe3,OUTPUT);
//#define IO_Mode_Probe4() MR88FX02_Gpio_Set_Mode(IO_Probe4,OUTPUT);


#define IO_Mode_RTD() MR88FX02_Gpio_Set_Mode(IO_RTD,ANALOG);
#define IO_Mode_Ref() MR88FX02_Gpio_Set_Open_Drain(IO_Ref,1);
#define IO_Mode_Oven() MR88FX02_Gpio_Set_Open_Drain(IO_Oven,1);
#define IO_Mode_Probe1() MR88FX02_Gpio_Set_Open_Drain(IO_Probe1,1);
#define IO_Mode_Probe2() MR88FX02_Gpio_Set_Open_Drain(IO_Probe2,1);
#define IO_Mode_Probe3() MR88FX02_Gpio_Set_Open_Drain(IO_Probe3,1);
#define IO_Mode_Probe4() MR88FX02_Gpio_Set_Open_Drain(IO_Probe4,1);



typedef enum
{
    RTD_Seq_Vref = 0, //参考电压采集序号
    RTD_Seq_RTD, //RTD采集序号
    RTD_Seq_ProbePG,
    RTD_Seq_Probe1, //Probe1采集序号
    RTD_Seq_Probe2, //Probe2采集序号
    RTD_Seq_Probe3, //Probe2采集序号
    RTD_Seq_Probe4, //Probe4采集序号
    RTD_Seq_End,
}RTD_Seq_E;

typedef struct __RTD
{
    int32_t value; //Integer that contains the process value
    _Pt_Status status;
}_RTD;
extern _RTD RTD[RTD_Seq_End];
extern uint8_t LowTemp_Ctrl;

void ADInit(void);
void TempADC_Main(void);
void ADC_Clock_2ms(void);

#endif
